## WindowsControl - внешняя компонента для управления окнами и процессами

Предназначена для Windows и Linux. Разработана по технологии Native API в составе библиотеки VanessaExt.

### Возможности компоненты:
- Получение списка окон и списка процессов
- Управление размерами и положением окна
- Получение снимка окна и снимка экрана
- Обмен данными по протоколу WebSocket
- Эмуляция действий пользователя
- Доступ к данным буфера обмена

### Подключение внешней компоненты

```bsl
&НаКлиенте
Перем ВнешняяКомпонента;

&НаКлиенте
Процедура ПодключениеВнешнейКомпонентыЗавершение(Подключение, ДополнительныеПараметры) Экспорт
	ВнешняяКомпонента = Новый("AddIn." + ИдентификаторКомпоненты + ".WindowsControl");
КонецПроцедуры	

```
### Свойства

- <a href="#ScreenInfo">СвойстваЭкрана (ScreenInfo)</a>
- <a href="#DisplayList">СписокДисплеев (DisplayList)</a>
- <a href="#WindowList">СписокОкон (WindowList)</a>
- <a href="#ProcessId">ИдентификаторПроцесса (ProcessId)</a>
- <a href="#ActiveWindow">АктивноеОкно (ActiveWindow)</a>
- <a href="#ActiveElement">АктивныйЭлемент (ActiveElement)</a>
- <a href="#ClipboardText">ТекстБуфераОбмена (ClipboardText)</a>
- <a href="#ClipboardImage">КартинкаБуфераОбмена (ClipboardImage)</a>
- <a href="#CursorPos">ПозицияКурсора (CursorPos)</a>
- <a href="#ScaleFactor">Масштаб (ScaleFactor)</a>

### Методы

Работа с процессами:
- <a href="#FindTestClient">НайтиКлиентТестирования (FindTestClient)</a>
- <a href="#GetProcessList">ПолучитьСписокПроцессов (GetProcessList)</a>
- <a href="#GetProcessInfo">ПолучитьСвойстваПроцесса (GetProcessInfo)</a>
- <a href="#OutputToConsole">ВывестиВКонсоль (OutputToConsole)</a>
- <a href="#CreateProcess">СоздатьПроцесс (CreateProcess)</a>
- <a href="#Sleep">Пауза (Sleep)</a>

Информация об окружении:
- <a href="#GetDisplayList">ПолучитьСписокДисплеев (GetDisplayList)</a>
- <a href="#GetDisplayInfo">ПолучитьСвойстваДисплея (GetDisplayInfo)</a>
- <a href="#GetFreeDiskSpace">СвободноеМестоНаДиске (GetFreeDiskSpace)</a>

Управление окном приложения:
- <a href="#GetWindowList">ПолучитьСписокОкон (GetWindowList)</a>
- <a href="#GetWindowInfo">ПолучитьСвойстваОкна (GetWindowInfo)</a>
- <a href="#GetWindowSize">ПолучитьРазмерОкна (GetWindowSize)</a>
- <a href="#SetWindowSize">УстановитьРазмерОкна (SetWindowSize)</a>
- <a href="#SetWindowPos">УстановитьПозициюОкна (SetWindowPos)</a>
- <a href="#ActivateWindow">АктивироватьОкно (ActivateWindow)</a>
- <a href="#MaximixeWindow">РаспахнутьОкно (MaximixeWindow)</a>
- <a href="#RestoreWindow">РазвернутьОкно (RestoreWindow)</a>
- <a href="#MinimizeWindow">СвернутьОкно (MinimizeWindow)</a>

Виртуальные рабочие столы (только для Windows):
- <a href="#GetDesktopCount">ПолучитьКоличествоРабочихСтолов (GetDesktopCount)</a>
- <a href="#GetCurrentDesktop">ПолучитьТекущийРабочийСтол (GetCurrentDesktop)</a>
- <a href="#CreateDesktop">СоздатьРабочийСтол (CreateDesktop)</a>
- <a href="#RemoveDesktop">УдалитьРабочийСтол (RemoveDesktop)</a>
- <a href="#GoToDesktop">ПереключитьРабочийСтол (GoToDesktop)</a>
- <a href="#GetWindowDesktop">ПолучитьРабочийСтолОкна (GetWindowDesktop)</a>
- <a href="#MoveWindowToDesktop">ПереместитьОкноНаРабочийСтол (MoveWindowToDesktop)</a>

Автоматизация пользовательского интерфейса (только для Windows):
- <a href="#GetElements">ПолучитьЭлементы (GetElements)</a>
- <a href="#FindElements">НайтиЭлементы (FindElements)</a>
- <a href="#GetElementById">ЭлементПоИдентификатору (GetElementById)</a>
- <a href="#GetParentElement">ПолучитьРодителяЭлемента (GetParentElement)</a>
- <a href="#GetNextElement">ПолучитьСледующийЭлемент (GetNextElement)</a>
- <a href="#GetPreviousElement">ПолучитьПредыдущийЭлемент (GetPreviousElement)</a>
- <a href="#FocusElement">АктивироватьЭлемент (FocusElement)</a>
- <a href="#InvokeElement">ВызватьЭлемент (InvokeElement)</a>
- <a href="#GetElementValue">ПолучитьЗначениеЭлемента (GetElementValue)</a>
- <a href="#SetElementValue">УстановитьЗначениеЭлемента (SetElementValue)</a>

Эмуляция действий пользователя (только для Windows):
- <a href="#EmulateMouse">ЭмуляцияДвиженияМыши (EmulateMouse)</a>
- <a href="#EmulateClick">ЭмуляцияНажатияМыши (EmulateClick)</a>
- <a href="#EmulateDblClick">ЭмуляцияДвойногоНажатия (EmulateDblClick)</a>
- <a href="#EmulateWheel">ЭмуляцияКолесаМыши (EmulateWheel)</a>
- <a href="#EmulateHotkey">ЭмуляцияНажатияКлавиши (EmulateHotkey)</a>
- <a href="#DragAndDrop">ЭмуляцияПеретаскивания (DragAndDrop)</a>
- <a href="#EmulateText">ЭмуляцияВводаТекста (EmulateText)</a>

Меотды компьютерного зрения:
- <a href="#FindFragment">НайтиФрагмент (FindFragment)</a>
- <a href="#FindOnScreen">НайтиНаЭкране (FindOnScreen)</a>

Визуализация действий пользователя (только для Windows):
- <a href="#ShowClick">ПоказатьНажатиеМыши (ShowClick)</a>
- <a href="#VisualizeClick">ВизуализацияНажатияМыши (VisualizeClick)</a>
- <a href="#ShowClickVisualization">ПоказатьВизуализациюНажатияМыши (ShowClickVisualization)</a>
- <a href="#StopClickVisualization">ПрекратитьВизуализациюНажатияМыши (StopClickVisualization)</a>
- <a href="#DrawRectangle">НарисоватьПрямоугольник (DrawRectangle)</a>
- <a href="#DrawEllipse">НарисоватьЭллипс (DrawEllipse)</a>
- <a href="#DrawArrow">НарисоватьСтрелку (DrawArrow)</a>
- <a href="#DrawBezier">НарисоватьКривую (DrawBezier)</a>
- <a href="#DrawShadow">НарисоватьТень (DrawShadow)</a>
- <a href="#ShowHint">ПоказатьПодсказку (ShowHint)</a>
- <a href="#ShowMagnifier">ПоказатьУвеличение (ShowMagnifier)</a>
- <a href="#HideMagnifier">СкрытьУвеличение (HideMagnifier)</a>
- <a href="#ScaleImage">МасштабироватьИзображение (ScaleImage)</a>
- <a href="#ShowStopWindow">ПоказатьОкноПрерывания (ShowStopWindow)</a>
- <a href="#CloseStopWindow">ЗакрытьОкноПрерывания (CloseStopWindow)</a>


Воспроизведение мультимедиа файлов (только для Windows):
- <a href="#PlaySound">ВоспроизвестиЗвук (PlaySound)</a>
- <a href="#PlayMedia">ВоспроизвестиМедиа (PlayMedia)</a>
- <a href="#PlayingMedia">ВоспроизводитсяМедиа (PlayingMedia)</a>
- <a href="#StopMedia">ПрерватьМедиа (StopMedia)</a>
- <a href="#MediaCommand">МедиаКоманда (MediaCommand)</a>

Обмен данными по протоколу WebSocket:
- <a href="#OpenWebSocket">ОткрытьВебСокет (OpenWebSocket)</a>
- <a href="#SendWebSocket">ПослатьВебСокет (SendWebSocket)</a>
- <a href="#CloseWebSocket">ЗакрытьВебСокет (CloseWebSocket)</a>
- <a href="#WebSocket">ВебСокет (WebSocket)</a>

Захват изображения экрана:
- <a href="#TakeScreenshot">ПолучитьСнимокЭкрана (TakeScreenshot)</a>
- <a href="#CaptureRegion">ПолучитьСнимокОбласти (CaptureRegion)</a>
- <a href="#CaptureWindow">ПолучитьСнимокОкна (CaptureWindow)</a>
- <a href="#CaptureProcess">ПолучитьСнимокПроцесса (CaptureProcess)</a>

Поиск файлов (только для Windows):
- <a href="#FindFiles">НайтиФайлы (FindFiles)</a>

## Свойства

### <a name="ScreenInfo">СвойстваЭкрана / ScreenInfo</a>
Тип значения: Строка (только чтение)
- Возвращает строку с текстом в формате JSON, при чтении которого получаем
объект типа ***Структура*** с размерами экрана и рабочей области.

### <a name="DisplayList">СписокДисплеев / DisplayList</a>
Тип значения: Строка (только чтение)
- Возвращает строку с текстом в формате JSON, при чтении которого получаем
объект типа ***Массив*** из элементов типа ***Структура*** с размерами дисплеев мониторов.

### <a name="WindowList">СписокОкон / WindowList</a>
Тип значения: Строка (только чтение)
- Возвращает строку с текстом в формате JSON, при чтении которого получаем
объект типа ***Массив*** из элементов типа ***Структура*** с информацией об окнах 
верхнего уровня: дескриптор окна, диентификатор процесса, владелец, заголовок окна.

### <a name="ProcessId">ИдентификаторПроцесса / ProcessId</a>
Тип значения: Целое число (только чтение)
- Возвращает идентификатор основного процесса приложения 1С, в сеансе которого 
вызывается внешняя компонента.

### <a name="ActiveWindow">АктивноеОкно / ActiveWindow</a>
Тип значения: Целое число (чтение и запись)
- Дескриптор приоритетного окна (окна, с которым пользователь в настоящее время работает). 

### <a name="ClipboardText">ТекстБуфераОбмена / ClipboardText</a>
Тип значения: Строка (чтение и запись)
- Предоставляет доступ к содержимому буфера обмена в текстовом формате. 

### <a name="ClipboardImage">КартинкаБуфераОбмена / ClipboardImage</a>
Тип значения: Двоичные данные (чтение и запись)
- Предоставляет доступ к содержимому буфера обмена в формате картинки PNG. 

```bsl
ПотокВПамяти = Новый ПотокВПамяти;
БиблиотекаКартинок.ДиалогИнформация.Записать(ПотокВПамяти);
ДвоичныеДанные = ПотокВПамяти.ЗакрытьИПолучитьДвоичныеДанные();
ВнешняяКомпонента.КартинкаБуфераОбмена = ДвоичныеДанные;
```

## Методы
### <a name="FindTestClient">НайтиКлиентТестирования(НомерПорта) / FindTestClient</a>
Возвращает текст в формате JSON, при чтении которого получаем объект типа ***Структура***, 
сотдержащий информацию о клиенте тестирования, найденному по номеру порта, 
который присутствует в командной строке экземпляра клиента тестирования.

Параметры функции:
- **НомерПорта** (обязательный), Тип: Целое число

Тип возвращаемого значения: Строка
- Содержит строку с текстом в формате JSON, при чтении которого получаем
объект типа ***Структура*** с подробной информацией о найденном процессе.
    - ProcessId - идентификатор процесса (Число)
	- CommandLine - командная строка процесса (Строка)
	- CreationDate - дата старта процесса (Дата)
	- Window - дескриптор основного окна (Число)
	- Title - заголовок основного окна (Строка)

```bsl
ТекстJSON = ВнешняяКомпонента.НайтиКлиентТестирования(ПортПодключения);
СтруктураСвойствПроцесса = ПрочитатьСтрокуJSON(ТекстJSON);
Если СтруктураСвойствПроцесса <> Неопределено Тогда
	ИдентификаторПроцесса = СтруктураСвойствПроцесса.ProcessId;
	ДескрипторОкна = СтруктураСвойствПроцесса.Window;
КонецЕсли;
```
### <a name="GetProcessList">ПолучитьСписокПроцессов(ИспользоватьОтбор) / GetProcessList</a>
Получает список запущенных процессов с возможностью отбора только процессов 1С.
Отбор производится по наименованию исполняемого файла на соответствие маске "1cv8*".

Параметры функции:
- **ИспользоватьОтбор** (обязательный), Тип: Булево

Тип возвращаемого значения: Строка
- Содержит строку с текстом в формате JSON, при чтении которого получаем
типа ***Массив*** из элементов типа ***Структура*** информацией о процессах.

```bsl
ТекстJSON = ВнешняяКомпонента.ПолучитьСписокПроцессов(Истина);
Для каждого Стр из ПрочитатьСтрокуJSON(ТекстJSON) Цикл
	НоваяСтр = СписокПроцессов.Добавить();
	ЗаполнитьЗначенияСвойств(НоваяСтр, Стр);
КонецЦикла;
```

### <a name="GetProcessInfo">ПолучитьСвойстваПроцесса(ИдентификаторПроцесса) / GetProcessInfo</a>
По идентификатору процесса возвращает всю доступную информацию о процессе.

Параметры функции:
- **ИдентификаторПроцесса** (обязательный), Тип: Целое число

Тип возвращаемого значения: Строка
- Содержит строку с текстом в формате JSON, при чтении которого получаем
объект типа ***Структура*** с подробной информацией о процессе:
    - ProcessId - идентификатор процесса (Число)
	- CommandLine - командная строка процесса (Строка)
	- CreationDate - дата старта процесса (Дата)

```bsl
ТекстJSON = ВнешняяКомпонента.ПолучитьСвойстваПроцесса(ИдентификаторПроцесса);
СтруктураСвойстваПроцесса = ПрочитатьСтрокуJSON(ТекстJSON);
```

### <a name="OutputToConsole">ВывестиВКонсоль(Текст, Кодировка) / OutputToConsole</a>
Выводит произвольный текст в консоль родительского процесса.

Параметры функции:
- **Текст** (обязательный), Тип: Строка
- **Кодировка** (необязательный), Тип: Целое число
    - Кодировка текста при перенаправлении вывода в файл, по умолчанию 866.

```bsl
Текст = "Привет! Проверка связи." + Символы.ПС;
ВнешняяКомпонента.ВывестиВКонсоль(Текст);
```

### <a name="CreateProcess">СоздатьПроцесс(Команда, СкрытьОкно) / CreateProcess</a>
Выполняет запуск внешнего приложения или команды операционной системы.

Параметры функции:
- **Команда** (обязательный), Тип: Строка
- **СкрытьОкно** (необязательный), Тип: Булево

Тип возвращаемого значения: Целое число
- Идентификатор процесса внешнего приложения

При завершении работы приложения происходит генерация внешнего события.

```bsl
КоманднаяСтрока = "ping 127.0.0.1";
PID = ВнешняяКомпонента.СоздатьПроцесс(КоманднаяСтрока, Истина);
```

### <a name="WebSocket">ВебСокет(Адрес, Команда) / WebSocket</a>
Простейшая функция однократного обмена данными по протоколу WebSocket.
Может использоваться для интеграции с браузером Google Chrome.

Параметры функции:
- **Адрес** (обязательный), Тип: Строка
- **Команда** (обязательный), Тип: Строка

Тип возвращаемого значения: Строка
- Содержит данные, полученные как ответ сервера WebSocket на отправленную команду.

```bsl
	АдресВебСокет = "ws://localhost:9222/devtools/page/771BF9AF6EE6F712337EF74397960652";
	КомандаJSON = "{""id"":1,""method"":""Page.captureScreenshot"",""params"":{""format"":""png""}";
	ТекстJSON = ВнешняяКомпонента.ВебСокет(АдресВебСокет, КомандаJSON);
	ДанныеJSON = ПрочитатьСтрокуJSON(ТекстJSON);
	ДвоичныеДанные = Base64Значение(ДанныеJSON.result.data);
```
Подробная информация о Chrome DevTools Protocol доступна по адресу:
* https://chromedevtools.github.io/devtools-protocol/

### <a name="OpenWebSocket">ОткрытьВебСокет(Адрес) / OpenWebSocket</a>
Подключение к серверу WebSocket для начала многократного обмена данными.
Может использоваться для интеграции с браузером Google Chrome.

Параметры функции:
- **Адрес** (обязательный), Тип: Строка

Тип возвращаемого значения: Строка
- Пустая строка в случае успеха, либо сообщение об ошибке.

```bsl
АдресВебСокет = "ws://localhost:9222/devtools/page/771BF9AF6EE6F712337EF74397960652";
Результат  = ВнешняяКомпонента.ОткрытьВебСокет(АдресВебСокет);
Если Не ПустаяСтрока(Результат) Тогда
	Сообщить(Результат);
КонецЕсли
```

### <a name="SendWebSocket">ПослатьВебСокет(Команда) / SendWebSocket</a>
Обмен данными по протоколу WebSocket: отправка пакета данных и получение результата.
Может использоваться для интеграции с браузером Google Chrome.

Параметры функции:
- **Команда** (обязательный), Тип: Строка

Тип возвращаемого значения: Строка
- Содержит данные, полученные как ответ сервера WebSocket на отправленную команду.

```bsl
КомандаJSON = "{""id"":1,""method"":""Page.captureScreenshot""}";
ТекстJSON = ВнешняяКомпонента.ПослатьВебСокет(КомандаJSON);
ДанныеJSON = ПрочитатьСтрокуJSON(ТекстJSON);
ДвоичныеДанные = Base64Значение(ДанныеJSON.result.data);
```

### <a name="CloseWebSocket">ЗакрытьВебСокет() / CloseWebSocket</a>
Закрытие открытого ранее соединения WebSocket.

Возвращаемое значение отсутствует.

```bsl
ВнешняяКомпонента.ЗакрытьВебСокет();
```

### <a name="Sleep">Пауза(Милисекунды) / Sleep</a>
Приостанавливает выполнение программного кода на заданное количество миллисекунд.

```bsl
ВнешняяКомпонента.Пауза(1000);
```

### <a name="GetDisplayList">ПолучитьСписокДисплеев(ДескрипторОкна) / GetDisplayList</a>
По дескриптору окна получает список дисплеев, на которых располагается окно или его части.

Параметры функции:
- **ДескрипторОкна** (необязательный), Тип: Целое число
Если параметр не задан, будет получена информация обо всех дисплеях.

Тип возвращаемого значения: Строка
- Содержит строку с текстом в формате JSON, при чтении которого получаем объект 
типа ***Массив*** из элементов типа ***Структура*** со свойствами дисплея: координаты 
границ, высота и ширина, наименование дисплея, координаты и размер рабочей области дисплея.

```bsl
ТекстJSON = ВнешняяКомпонента.ПолучитьСписокДисплеев(ДескрипторОкна);
Для каждого ЭлементМассива из ПрочитатьСтрокуJSON(ТекстJSON) Цикл
	ЗаполнитьЗначенияСвойств(СписокДисплеев.Добавить(), ЭлементМассива);
КонецЦикла;
```

### <a name="GetDisplayInfo">ПолучитьСвойстваДисплея(ДескрипторОкна) / GetDisplayInfo</a>
По дескриптору окна получает свойства дисплея, на котором располагается наибольшая часть окна.

Параметры функции:
- **ДескрипторОкна** (необязательный), Тип: Целое число
Если параметр не задан, будет получена информация для активного окна.

Тип возвращаемого значения: Строка
- Содержит строку с текстом в формате JSON, при чтении которого получаем объект 
типа ***Структура*** со свойствами дисплея: координаты границ, высота и ширина,
наименование дисплея, координаты и размер рабочей области дисплея.

```bsl
ТекстJSON = ВнешняяКомпонента.ПолучитьСвойстваДисплея(ДескрипторОкна);
СвойстваДисплея = ПрочитатьСтрокуJSON(ТекстJSON);
ВнешняяКомпонента.УстановитьПозициюОкна(ДескрипторОкна, СвойстваДисплея.Left, СвойстваДисплея.Top);
```

### <a name="GetWindowList">ПолучитьСписокОкон(ИдентификаторПроцесса) / GetWindowList</a>
Возвращает текст в формате JSON, при чтении которого получаем объект типа ***Массив***
из элементов типа ***Структура*** с информацией об окнах, принадлежащих указанному процессу.

Параметры функции:
- **ИдентификаторПроцесса** (обязательный), Тип: Целое число
	- Если параметр нулевой или не задан, возвращается список всех окон.

Тип возвращаемого значения: Строка
- Содержит строку с текстом в формате JSON, при чтении которого получаем объект 
типа ***Массив*** из элементов типа ***Структура*** с информацией о найденых окнах:
	- Window - дескриптор окна (Число)
    - ProcessId - идентификатор процесса (Число)
	- Class - идентификатор класса окна (Строка)
	- Title - заголовок окна (Строка)
	- Owner - окно владелец (Число)

```bsl
ТекстJSON = ВнешняяКомпонента.ПолучитьСписокОкон(ИдентификаторПроцесса);
МассивОкон = ПрочитатьСтрокуJSON(ТекстJSON);
ТаблицаОкон.Очистить();
Для каждого Стр из МассивОкон Цикл
	ЗаполнитьЗначенияСвойств(ТаблицаОкон.Добавить(), Стр);
КонецЦикла;
```

### <a name="GetWindowInfo">ПолучитьСвойстваОкна(ДескрипторОкна) / GetWindowInfo</a>
Возвращает текст в формате JSON, при чтении которого получаем объект 
типа ***Структура*** с информацией об основных свойставх окна:

Параметры функции:
- **ДескрипторОкна** (обязательный), Тип: Целое число
	- Если параметр нулевой, будут получены свойства активного окна.

Тип возвращаемого значения: Строка
- Содержит строку с текстом в формате JSON, при чтении которого получаем объект 
типа ***Структура*** с информацией об основных свойствах окна:
	- Window - дескриптор окна (Число)
    - ProcessId - идентификатор процесса (Число)
	- Maximized - распахнуто, максимизировано (Булево)
	- Class - идентификатор класса окна (Строка)
	- Title - заголовок окна (Строка)
	- Owner - окно владелец (Число)

```bsl
ТекстJSON = ВнешняяКомпонента.ПолучитьСписокОкон(ИдентификаторПроцесса);
СвойстваОкна = ПрочитатьСтрокуJSON(ТекстJSON);
ЗаголовокОкна = СвойстваОкна.Title;
```

### <a name="GetWindowSize">ПолучитьРазмерОкна(ДескрипторОкна) / GetWindowSize</a>
Возвращает текст в формате JSON, при чтении которого получаем объект объект 
типа ***Структура*** с информацией о размерах и позиции окна.

Параметры функции:
- **ДескрипторОкна** (обязательный), Тип: Целое число
	- Если параметр нулевой, будут получены размеры активного окна.

Тип возвращаемого значения: Строка
- Содержит строку с текстом в формате JSON, при чтении которого получаем объект 
типа ***Структура*** с информацией о размерах и позиции окна:
    - Left - левая граница (Число)
	- Top - верхняя граница (Число)
	- Right - правая граница (Число)
	- Bottom - нижняя граница (Число)
	- Width - ширина окна (Число)
	- Height - высота высота (Число)
	- Window - дескриптор окна (Число)

### <a name="ActivateWindow">АктивироватьОкно(ДескрипторОкна) / ActivateWindow</a>
Активирует окно по дескриптору.

Параметры функции:
- **ДескрипторОкна** (обязательный), Тип: Целое число

```bsl
ВнешняяКомпонента.АктивироватьОкно(ДескрипторОкна);
```
### <a name="MaximixeWindow">РаспахнутьОкно(ДескрипторОкна) / MaximixeWindow</a>
Распахиват (максимизирует) окно, разворачивая его на всё рабочую область экрана.

Параметры функции:
- **ДескрипторОкна** (обязательный), Тип: Целое число

```bsl
ВнешняяКомпонента.РаспахнутьОкно(ДескрипторОкна);
```
### <a name="RestoreWindow">РазвернутьОкно(ДескрипторОкна) / RestoreWindow</a>
Показывает окно в нормальном режиме отображения, если оно было свёрнуто или распахнуто.

Параметры функции:
- **ДескрипторОкна** (обязательный), Тип: Целое число

```bsl
ВнешняяКомпонента.РазвернутьОкно(ДескрипторОкна);
```

### <a name="SetCursorPos">УстановитьПозициюКурсора(X , Y) / SetCursorPos</a>
Перемещает позицию курсора (мышки) в указанную точку экрана.

```bsl
ВнешняяКомпонента.УстановитьПозициюКурсора(X, Y);
```

### <a name="FindFragment">НайтиФрагмент(Картинка, Фрагмент, МетодПоиска) / FindFragment</a>
Осуществляет поиск фрагмента картинки, возвращает результат в формате JSON.
Используются алгоритмы библиотеки [OpenCV](https://docs.opencv.org/4.5.1/de/da9/tutorial_template_matching.html)

Параметры процедуры:
- **Картинка** (обязательный), Тип: Двоичные данные
- **Фрагмент** (обязательный), Тип: Двоичные данные
- **МетодПоиска** (обязательный), Тип: Число (от 0 до 2)
    - 0 - Соответствует значению TM_SQDIFF_NORMED
    - 1 - Соответствует значению TM_CCORR_NORMED
    - 2 - Соответствует значению TM_CCOEFF_NORMED

Тип возвращаемого значения: Строка
- Содержит строку с текстом в формате JSON, при чтении которого получаем объект 
типа ***Структура*** с информацией о размерах и позиции найденного фрагмента:
	- Match - соответствие найденного фрагмента образцу (Число от 0 до 1)
    - Left - левая граница (Число)
	- Top - верхняя граница (Число)
	- Right - правая граница (Число)
	- Bottom - нижняя граница (Число)
	- Width - ширина фрагмента (Число)
	- Height - высота фрагмента (Число)
	- X - координата центра (Число)
	- Y - координата центра (Число)

```bsl
ДанныеКартинки = Новый ДвоичныеДанные("C:\Demo\Picture.png");
ДанныеФрагмента = Новый ДвоичныеДанные("C:\Demo\Fragment.png");
ТекстJSON = ВнешняяКомпонента.НайтиФрагмент(ДанныеКартинки, ДанныеФрагмента);
```

### <a name="FindFragment">НайтиФрагмент(Картинка, Фрагмент, МетодПоиска) / FindFragment</a>
Осуществляет поиск картинки на экране, возвращает результат в формате JSON.
Используются алгоритмы библиотеки [OpenCV](https://docs.opencv.org/4.5.1/de/da9/tutorial_template_matching.html)

Параметры процедуры:
- **Фрагмент** (обязательный), Тип: Двоичные данные
- **МетодПоиска** (обязательный), Тип: Число (от 0 до 2)
    - 0 - Соответствует значению TM_SQDIFF_NORMED
    - 1 - Соответствует значению TM_CCORR_NORMED
    - 2 - Соответствует значению TM_CCOEFF_NORMED

Тип возвращаемого значения: Строка
- Содержит строку с текстом в формате JSON, при чтении которого получаем объект 
типа ***Структура*** с информацией о размерах и позиции найденного фрагмента:
	- Match - соответствие найденного фрагмента образцу (Число от 0 до 1)
    - Left - левая граница (Число)
	- Top - верхняя граница (Число)
	- Right - правая граница (Число)
	- Bottom - нижняя граница (Число)
	- Width - ширина фрагмента (Число)
	- Height - высота фрагмента (Число)
	- X - координата центра (Число)
	- Y - координата центра (Число)

```bsl
ФрагментКартинки = Новый ДвоичныеДанные("C:\Demo\Fragment.png");
ТекстJSON = ВнешняяКомпонента.НайтиНаЭкране(ФрагментКартинки);
```

### <a name="EmulateMouse">ЭмуляцияДвиженияМыши(X , Y, КоличествоШагов, ТаймаутШага) / EmulateMouse</a>
Плавно перемещает позицию курсора (мышки) в указанную точку экрана за обозначенное 
количество шагов, на каждом шаге производися задержка на указанное количество милисекунд.

```bsl
ВнешняяКомпонента.ЭмуляцияДвиженияМыши(X, Y, 1000, 3);
```

### <a name="DragAndDrop">ЭмуляцияПеретаскивания(X , Y, КоличествоШагов, ТаймаутШага) / DragAndDrop</a>
Эмулирует нажатие левой кнопкой миши, плавно перемещает позицию курсора (мышки) в указанную точку 
экрана за обозначенное количество шагов, на каждом шаге производися задержка на указанное количество 
милисекунд и затем эмулирует отпускание левой кнопкой мыши, то есть выполняет перетаскивание.

```bsl
ВнешняяКомпонента.ЭмуляцияПеретаскивания(X, Y, 1000, 3);
```

### <a name="EmulateClick">ЭмуляцияНажатияМыши(КнопкаМыши) / EmulateClick</a>
Эмулирует нажаите указанной кнопки мыши.

Параметры процедуры:
- **КнопкаМыши** (обязательный), Тип: Целое число
    - 0 - Левая кнопка
    - 1 - Правая кнопка
    - 2 - Средняя кнопка

```bsl
ВнешняяКомпонента.ЭмуляцияНажатияМыши(0);
```

### <a name="EmulateDblClick">ЭмуляцияДвойногоНажатия(Задержка) / EmulateDblClick</a>
Эмулирует нажаите левой кнопкой мыши.

Параметры процедуры:
- **Задержка** (необязательный), Тип: Целое число
    - Задержка между нажатиями в милисекундах, по умолчанию 100.

```bsl
ВнешняяКомпонента.ЭмуляцияДвойногоНажатия();
```

### <a name="EmulateWheel">ЭмуляцияКолесаМыши(Направление) / EmulateWheel</a>
Эмулирует вращение колеса мыши.

Параметры процедуры:
- **КнопкаМыши** (обязательный), Тип: Целое число
    - (+1) - Вращение вперёд
    - (-1) - Вращение назад

```bsl
ВнешняяКомпонента.ЭмуляцияКолесаМыши(1);
```

### <a name="EmulateHotkey">ЭмуляцияНажатияКлавиши(Клавиша, Флаги) / EmulateHotkey</a>
Эмулирует нажаите пользователем горячей клавиши. Параметры функции 
совместимы с типовым объектом **СочетаниеКлавиш**. Для вызова
рекомендуется использовать следующий программный код.

```bsl
СочетаниеКлавиш = Новый СочетаниеКлавиш(Клавиша.F11, Ложь, Истина, Ложь);

ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
ЗаписатьXML(ЗаписьXML, СочетаниеКлавиш);
ТекстXML = ЗаписьXML.Закрыть();
ЧтениеXML = Новый ЧтениеXML; 
ЧтениеXML.УстановитьСтроку(ТекстXML);
ПостроительDOM = Новый ПостроительDOM;
ДокументDOM = ПостроительDOM.Прочитать(ЧтениеXML);
КорневойУзел = ДокументDOM.ПервыйДочерний;
Для каждого ДочернийУзел из КорневойУзел.ДочерниеУзлы Цикл
	Если ДочернийУзел.ИмяУзла = "vKey" Тогда
		Клавиша = Число(ДочернийУзел.ТекстовоеСодержимое);
	ИначеЕсли ДочернийУзел.ИмяУзла = "flags" Тогда
		Флаги = Число(ДочернийУзел.ТекстовоеСодержимое);
	КонецЕсли;
КонецЦикла;

ВнешняяКомпонента.ЭмуляцияНажатияКлавиши(Клавиша, Флаги);
```

Альтернативный вариант вызова функции, в первом параметра передаётся строка
в формате JSON, представляющая собой массив с кодами виртуальных клавиш.
Второй параметр при этом необязателен и игнорируется.
```bsl
ТекстJSON = "[91, 69]"; // Win+E
ВнешняяКомпонента.ЭмуляцияНажатияКлавиши(ТекстJSON);
```

### <a name="EmulateText">ЭмуляцияВводаТекста(Текст, Таймаут) / EmulateText</a>
Эмулирует последовательный ввод пользователем текста.

```bsl
ВнешняяКомпонента.ЭмуляцияВводаТекста("Текст коментария", 100);
```

### <a name="ShowClick">ПоказатьНажатиеМыши(Цвет, Радиус, Толщина, Задержка, Прозрачность) / ShowClick</a>
Однократный показ визуального эффекта в виде расходящихся концентрических кругов, для демонстрации нажатия мыши пользователем.

Параметры процедуры:
- **Цвет** (необязательный), Тип: Целое число
- **Радиус** (необязательный), Тип: Целое число
- **Толщина** (необязательный), Тип: Целое число
- **Задержка** (необязательный), Тип: Целое число
- **Прозрачность** (необязательный), Тип: Целое число

```bsl
ВнешняяКомпонента.ПоказатьНажатиеМыши(255, 30, 12, 12, 127);
```

### <a name="VisualizeClick">ВизуализацияНажатияМыши(Цвет, Радиус, Толщина, Задержка, Прозрачность) / VisualizeClick</a>
Включение режима, при котором каждое нажатие мыши сопровождается визуальным эффектом в виде расходящихся концентрических кругов.

Параметры процедуры:
- **Цвет** (необязательный), Тип: Целое число
- **Радиус** (необязательный), Тип: Целое число
- **Толщина** (необязательный), Тип: Целое число
- **Задержка** (необязательный), Тип: Целое число
- **Прозрачность** (необязательный), Тип: Целое число

```bsl
ВнешняяКомпонента.ВизуализацияНажатияМыши(255, 30, 12, 12, 127);
```

### <a name="ShowClickVisualization">ПоказатьВизуализациюНажатияМыши() / ShowClickVisualization</a>
Однократный показ визуального эффекта в виде расходящихся концентрических кругов ко текущим координатам 
указателя мыши с текущими настройками, если включен режим визуализации.

```bsl
ВнешняяКомпонента.ПоказатьВизуализациюНажатияМыши();
```

### <a name="StopClickVisualization">ПрекратитьВизуализациюНажатияМыши() / StopClickVisualization</a>
Отключение режима, при котором каждое нажатие мыши сопровождается визуальным эффектом.

```bsl
ВнешняяКомпонента.ПрекратитьВизуализациюНажатияМыши();
```

### <a name="DrawRectangle">НарисоватьПрямоугольник(params, x, y, w, h) / DrawRectangle</a>
Рисует на экране монитора прямоугольник заданного цвета и прозрачности.
Параметры определяют также толщину контура и длительность отображения фигуры.

```bsl
ЦветКакЧисло = Цвет.Красный + Цвет.Зеленый * 256 + Цвет.Синий * 65536;
ВремСтруктура = Новый Структура;
ВремСтруктура.Вставить("color", ЦветКакЧисло);
ВремСтруктура.Вставить("thickness", Толщина);
ВремСтруктура.Вставить("transparency", Прозрачность);
ВремСтруктура.Вставить("duration", Длительность);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Данные);
НастройкиРисования = ЗаписьJSON.Закрыть();
ВнешняяКомпонента.НачатьВызовНарисоватьПрямоугольник(
	Новый ОписаниеОповещения, НастройкиРисования, 
	ПозицияСлева, ПозицияСверху, ШиринаФигуры, ВысотаФигуры);
```

### <a name="DrawEllipse">НарисоватьЭллипс(params, x, y, w, h) / DrawEllipse</a>
Рисует на экране монитора эллипс заданного цвета и прозрачности.
Параметры определяют также толщину контура и длительность отображения фигуры.

```bsl
ВнешняяКомпонента.НачатьВызовНарисоватьЭллипс(
	Новый ОписаниеОповещения, НастройкиРисования, 
	ПозицияСлева, ПозицияСверху, ШиринаФигуры, ВысотаФигуры);
```

### <a name="DrawArrow">НарисоватьСтрелку(params, x1, y1, x2, y2) / DrawArrow</a>
Рисует между двумя точками на экране прямую стрелку заданного цвета и прозрачности.
Параметры определяют толщину контура, анимацию и длительность отображения фигуры.

```bsl
ВремСтруктура = Новый Структура;
ВремСтруктура.Вставить("color", ЦветКакЧисло);
ВремСтруктура.Вставить("thickness", Толщина);
ВремСтруктура.Вставить("transparency", Прозрачность);
ВремСтруктура.Вставить("frameCount", ЧислоКадровАнимации);
ВремСтруктура.Вставить("frameDelay", ЗадержкаАнимацииКадра);
ВремСтруктура.Вставить("duration", Длительность);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
НастройкиРисования = ЗаписатьJSON(ЗаписьJSON, Данные);
ВнешняяКомпонента.НачатьВызовНарисоватьСтрелку(
	Новый ОписаниеОповещения, НастройкиРисования, x1, y1, x2, y2);
```

### <a name="DrawArrow">DrawBezier(params, points) / DrawBezier</a>
Рисует между двумя точками на экране искривленную стрелку заданного цвета и прозрачности.
Параметры определяют толщину контура, анимацию и длительность отображения фигуры.
Количество точек в массиве должно быть кратным (3 * N + 1).

```bsl
МассивТочек = Новый Массив;
МассивТочек.Добавить(Новый Структура("x,y", 100, 500));
МассивТочек.Добавить(Новый Структура("x,y", 300, 500));
МассивТочек.Добавить(Новый Структура("x,y", 300, 700));
МассивТочек.Добавить(Новый Структура("x,y", 500, 700));
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ТекстJSON = ЗаписатьJSON(ЗаписьJSON, МассивТочек);
ВнешняяКомпонента.НачатьВызовНарисоватьСтрелку(
	Новый ОписаниеОповещения, НастройкиРисования, ТекстJSON);
```

### <a name="DrawShadow">НарисоватьТень(params, x, y, w, h, text) / DrawShadow</a>
Отображает на экране видеоэффект затенения всего экрана за исключением определенной области.
Оборажает подсказку и стрелку от текста подсказки к выделенной области.

```bsl
ЦветКакЧисло = Цвет.Красный + Цвет.Зеленый * 256 + Цвет.Синий * 65536;
ВремСтруктура = Новый Структура;
ВремСтруктура.Вставить("color", ЦветКакЧисло);
ВремСтруктура.Вставить("thickness", Толщина);
ВремСтруктура.Вставить("transparency", Прозрачность);
ВремСтруктура.Вставить("duration", Длительность);
ВремСтруктура.Вставить("fontName", ШрифтНадписи.Имя);
ВремСтруктура.Вставить("fontSize", ШрифтНадписи.Размер);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Данные);
НастройкиРисования = ЗаписьJSON.Закрыть();
ВнешняяКомпонента.НачатьВызовНарисоватьТень(
	Новый ОписаниеОповещения, НастройкиРисования, 
	ПозицияСлева, ПозицияСверху, ШиринаФигуры, ВысотаФигуры, ТекстПодсказки);
```

### <a name="ShowHint">ПоказатьПодсказку(params, x, y, text) / ShowHint</a>
Отображает на экране видеоэффект подсказки для точки по указанным координатам.

```bsl
ВремСтруктура = Новый Структура;
ВремСтруктура.Вставить("color", ЦветКакЧисло(ЦветКонтура));
ВремСтруктура.Вставить("background", ЦветКакЧисло(ЦветФона));
ВремСтруктура.Вставить("fontColor", ЦветКакЧисло(ЦветТекста));
ВремСтруктура.Вставить("fontName", ШрифтНадписи.Имя);
ВремСтруктура.Вставить("fontSize", ШрифтНадписи.Размер);
ВремСтруктура.Вставить("radius", РадиусЗакругления);
ВремСтруктура.Вставить("thickness", ТолщинаКонтура);
ВремСтруктура.Вставить("duration", Длительность);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Данные);
НастройкиРисования = ЗаписьJSON.Закрыть();
ВнешняяКомпонента.НачатьВызовПоказатьПодсказку(
	Новый ОписаниеОповещения, НастройкиРисования, 
	ПозицияСлева, ПозицияСверху, ТекстПодсказки);
```

### <a name="PlaySound">ВоспроизвестиЗвук(ИмяФайла, Асинхронно) / PlaySound</a>
Воспроизводит WAV-файл синхронно или асинхронно. Вызов без параметров останавливает воспроизведение.

Параметры функции:
- **ИмяФайла** (необязательный), Тип: Строка
- **Асинхронно** (необязательный), Тип: Булево

Возвращаемое значение отсутствует.

```bsl
ВнешняяКомпонента.ВоспроизвестиЗвук("sound.wav", Истина);
```

### <a name="PlayMedia">ВоспроизвестиМедиа(ИмяФайла, Идентификатор) / PlayMedia</a>
Воспроизводит мультимедиа файл в асинхронном режиме в отдельном потоке.

Параметры функции:
- **ИмяФайла** (обязательный), Тип: Строка
- **Идентификатор** (необязательный), Тип: Строка

Возвращаемое значение отсутствует.

```bsl
Идентификатор = Строка(Новый УникальныйИдентификатор);
ВнешняяКомпонента.ВоспроизвестиМедиа("sound.mp3", Идентификатор);
```

### <a name="PlayingMedia">ВоспроизводитсяМедиа(Идентификатор) / PlayingMedia</a>
Возвращает статус воспроизведения мультимедиа файла по его идентификатору.

### <a name="StopMedia">ПрерватьМедиа(Идентификатор) / StopMedia</a>
Прерывает воспроизведение мультимедиа файла по его идентификатору.

### <a name="MediaCommand">МедиаКоманда(Команда) / MediaCommand</a>
Выполняет произвольную мультимедиа команду, возвращая результат в виде строки.

Параметры функции:
- **Команда** (обязательный), Тип: Строка

Тип возвращаемого значения: Строка
- Содержит данные, полученные как результат выполнения команды.

### <a name="TakeScreenshot">ПолучитьСнимокЭкрана(Режим) / TakeScreenshot</a>
Получает снимок экрана или активного окна, в зависимости от переданного параметра.

Параметры функции:
- **Режим** (обязательный), Тип: Целое число
    - 0 - Чтобы сделать снимок всего экрана
    - 1 - Чтобы сделать снимок области активного окна

Тип возвращаемого значения: Двоичные данные
- Возвращает картинку в формате PNG.

```bsl
ДвоичныеДанные = ВнешняяКомпонента.ПолучитьСнимокЭкрана(0);
```
### <a name="CaptureRegion">ПолучитьСнимокОбласти(X, Y, W, H) / CaptureRegion</a>
Получает снимок области экрана по координатам.

Параметры функции:
- **X** (обязательный), Тип: Целое число (координата слева)
- **Y** (обязательный), Тип: Целое число (координата сверху)
- **W** (обязательный), Тип: Целое число (ширина области экрана)
- **H** (обязательный), Тип: Целое число (высота области экрана)

Тип возвращаемого значения: Двоичные данные
- Возвращает картинку в формате PNG.

```bsl
ДвоичныеДанные = ВнешняяКомпонента.ПолучитьСнимокОбласти(200, 200, 800, 600);
```
### <a name="CaptureWindow">ПолучитьСнимокОкна(ДескрипторОкна) / CaptureWindow</a>
Получает снимок произвольного окна по его дескриптору.

Параметры функции:
- **ДескрипторОкна** (обязательный), Тип: Целое число
    - 0 - Чтобы сделать снимок активного окна

Тип возвращаемого значения: Двоичные данные
- Возвращает картинку в формате PNG.

```bsl
ДвоичныеДанные = ВнешняяКомпонента.ПолучитьСнимокОкна(ДескрипторОкна);
```

### <a name="CaptureProcess">ПолучитьСнимокПроцесса(ИдентификаторПроцесса) / CaptureProcess</a>
Получает снимок верхнего окна экземпляра 1С:Предприятие по идентификатору процесса.

Параметры функции:
- **ИдентификаторПроцесса** (обязательный), Тип: Целое число
    - Идентификатор процесса приложения 1С:Предприятие

Тип возвращаемого значения: Двоичные данные
- Возвращает картинку в формате PNG.

```bsl
ДвоичныеДанные = ВнешняяКомпонента.ПолучитьСнимокПроцесса(ИдентификаторПроцесса);
```

### <a name="FindFiles">НайтиФайлы(Директория, МаскаПоиска, ИскомыйТекст, ИгнорироватьРегистр) / FindFiles</a>
Рекурсивный поиск файлов по маске и содержимому.

Параметры функции:
- **Директория** (обязательный), Тип: Строка
    - Начальная директория для поиска файлов
- **МаскаПоиска** (обязательный), Тип: Строка
    - Маска поиска файлов, например: *.txt
- **ИскомыйТекст** (обязательный), Тип: Строка
    - Искомый тект для поиска по содержимому файла
- **ИгнорироватьРегистр** (необязательный), Тип: Строка
    - Проверка на соответствие регистра искомого текста

Тип возвращаемого значения: Строка
- Содержит строку с текстом в формате JSON, при чтении которого получаем объект 
типа ***Массив*** из элементов типа ***Структура*** с информацией о найденых файлах:
	- name - имя файла (Строка)
	- path - полный путь файла (Строка)
    - size - размер файла в байтах (Число)
    - date - дата модификации файла (Дата)

```bsl
ТекстJSON = ВнешняяКомпонента.НайтиФайлы(Директория, МаскаПоиска, ИскомыйТекст, ИгнорироватьРегистр);
Данные = ПрочитатьСтрокуJSON(ТекстJSON);
СписокФайлов.Очистить();
Если ТипЗнч(Данные) = Тип("Массив") Тогда
	Для каждого Стр Из Данные Цикл
		НоваяСтр = СписокФайлов.Добавить();
		ЗаполнитьЗначенияСвойств(НоваяСтр, Стр);
	КонецЦикла;
КонецЕсли;

```

### <a name="EmptyClipboard">ОчиститьБуферОбмена() / EmptyClipboard</a>
Очищает буфер обмена.

```bsl
ВнешняяКомпонента.ОчиститьБуферОбмена();
```

### <a name="GetElements">ПолучитьЭлементы(Идентификатор, Глубина) / GetElements</a>
Получает элементы UI Automation в виде древовидной структуры 
по идентификатору процесса, либо идентификатору родительского элемента.
Второй параметр ограничивает грубину рекурсии получения дочерних элементов.

Параметры функции:
- **ИдентификаторПроцесса** (обязательный), Тип: Целое число
- **Глубина** (необязательный), Тип: Целое число

Вариант вызова функции:
- **ИдентификаторРодителя** (обязательный), Тип: Строка
- **Глубина** (необязательный), Тип: Целое число

Тип возвращаемого значения: Строка
- Содержит строку с текстом в формате JSON, при чтении которого получаем
массив объектов типа ***Структура***, каждый из которых также может
содержать массив дочерних элементов.

```bsl
ТекстJSON = ВнешняяКомпонента.ПолучитьЭлементы(ИдентификаторПроцесса);
```

### <a name="FindElements">НайтиЭлементы(УсловиеОтбора) / FindElements</a>
Осуществляет поиск элементов UI Automation по условиям отбора.

Параметры функции:
- **УсловиеОтбора** (обязательный), Тип: Строка формата JSON

Тип возвращаемого значения: Строка
- Содержит строку с текстом в формате JSON, при чтении которого получаем
массив объектов типа ***Структура***, содержащий свойства найденных элементов.

```bsl
ВремСтруктура = Новый Структура;
ВремСтруктура.Вставить("ProcessId", ИдентификаторПроцесса);
ВремСтруктура.Вставить("Parent", ИдентификаторРодителя);
ВремСтруктура.Вставить("Name", ИмяЭлемента);
ВремСтруктура.Вставить("ControlType", "Button");
ВремСтруктура.Вставить("LegacyIAccessibleHelp", "Расширенная подсказка элемента");
ВремСтруктура.Вставить("LegacyIAccessibleKeyboardShortcut", "F12");
УсловиеОтбора = ЗаписатьСтрокуJSON(ВремСтруктура);
ТекстJSON = ВнешняяКомпонента.НайтиЭлементы(УсловиеОтбора);
```

### <a name="GetElementById">ЭлементПоИдентификатору(ИдентификаторЭлемента) / GetElementById</a>
Получает элемент UI Automation по его идентификатору. 
Идентификатор элемента уникален для каждого экземпляра приложения.

Параметры функции:
- **ИдентификаторЭлемента** (обязательный), Тип: Строка

Тип возвращаемого значения: Строка
- Содержит строку с текстом в формате JSON, при чтении которого получаем
объект типа ***Структура***, содержащий свойства полученного элемента.

```bsl
ТекстJSON = ВнешняяКомпонента.ЭлементПоИдентификатору(ИдентификаторЭлемента);
```

### <a name="GetParentElement">ПолучитьРодителяЭлемента(ИдентификаторЭлемента) / GetParentElement</a>
Получает UI Automation по идентификатору элемента его родительский элемент. 
Идентификатор элемента уникален для каждого экземпляра приложения.

Параметры функции:
- **ИдентификаторЭлемента** (обязательный), Тип: Строка

Тип возвращаемого значения: Строка
- Содержит строку с текстом в формате JSON, при чтении которого получаем
объект типа ***Структура***, содержащий свойства полученного родительского элемента.

```bsl
ТекстJSON = ВнешняяКомпонента.ПолучитьРодителяЭлемента(ИдентификаторЭлемента);
```

### <a name="GetNextElement">ПолучитьСледующийЭлемент(ИдентификаторЭлемента) / GetNextElement</a>
Получает по идентификатору элемента следующий ближайший соседний 
элемент UI Automation в пределах подчинения одному общему родителю. 

Параметры функции:
- **ИдентификаторЭлемента** (обязательный), Тип: Строка

Тип возвращаемого значения: Строка
- Содержит строку с текстом в формате JSON, при чтении которого получаем
объект типа ***Структура***, содержащий свойства полученного соседнего элемента.

```bsl
ТекстJSON = ВнешняяКомпонента.ПолучитьСледующийЭлемент(ИдентификаторЭлемента);
```

### <a name="GetPreviousElement">ПолучитьПредыдущийЭлемент(ИдентификаторЭлемента) / GetPreviousElement</a>
Получает по идентификатору элемента предыдущий ближайший соседний 
элемент UI Automation в пределах подчинения одному общему родителю. 

Параметры функции:
- **ИдентификаторЭлемента** (обязательный), Тип: Строка

Тип возвращаемого значения: Строка
- Содержит строку с текстом в формате JSON, при чтении которого получаем
объект типа ***Структура***, содержащий свойства полученного соседнего элемента.

```bsl
ТекстJSON = ВнешняяКомпонента.ПолучитьПредыдущийЭлемент(ИдентификаторЭлемента);
```

### <a name="FocusElement">АктивироватьЭлемент(ИдентификаторЭлемента) / FocusElement</a>
Активирует элемент UI Automation по его идентификатору.

Параметры функции:
- **ИдентификаторЭлемента** (обязательный), Тип: Строка

Тип возвращаемого значения: Строка
- Содержит строку с текстом в формате JSON, при чтении которого получаем
объект типа ***Структура***, содержащий свойства полученного элемента.

```bsl
ВнешняяКомпонента.АктивироватьЭлемент(ИдентификаторЭлемента);
```

### <a name="InvokeElement">ВызватьЭлемент(ИдентификаторЭлемента) / InvokeElement</a>
Выполняет действие по умолчанию (обычно это нажатие на кнопку) для элемента UI Automation.

Параметры функции:
- **ИдентификаторЭлемента** (обязательный), Тип: Строка

Тип возвращаемого значения: Строка
- Содержит строку с текстом в формате JSON, при чтении которого получаем
объект типа ***Структура***, содержащий свойства полученного элемента.

```bsl
ВнешняяКомпонента.ВызватьЭлемент(ИдентификаторЭлемента);
```

### <a name="GetElementValue">ПолучитьЗначениеЭлемента(ИдентификаторЭлемента) / GetElementValue</a>
Получает значение для элемента UI Automation.

Параметры функции:
- **ИдентификаторЭлемента** (обязательный), Тип: Строка

Тип возвращаемого значения: Строка
- Возвращает значение элемента.

```bsl
ЗначениеЭлемента = ВнешняяКомпонента.ПолучитьЗначениеЭлемента(ИдентификаторЭлемента);
```

### <a name="SetElementValue">УстановитьЗначениеЭлемента(ИдентификаторЭлемента, НовоеЗначение) / SetElementValue</a>
Устанавливает значение для элемента UI Automation.

Параметры функции:
- **ИдентификаторЭлемента** (обязательный), Тип: Строка
- **НовоеЗначение** (обязательный), Тип: Строка

```bsl
ВнешняяКомпонента.УстановитьЗначениеЭлемента(ИдентификаторЭлемента, НовоеЗначение);
```

### <a name="ShowStopWindow">ПоказатьОкноПрерывания(Параметры, Заголовок, Надпись) / ShowStopWindow</a>
Показывает независимое окно для прерывания пользователем продолжительных действий.

Параметры процедуры:
- **Параметры** (обязательный), Тип: Строка
- **Заголовок** (обязательный), Тип: Строка
- **Надпись** (обязательный), Тип: Строка

```bsl
ВремСтруктура = Новый Структура;
ВремСтруктура.Вставить("identifier", Строка(УникальныйИдентификатор));
ВремСтруктура.Вставить("color", ЦветКакЧисло(ЦветКонтура));
ВремСтруктура.Вставить("background", ЦветКакЧисло(ЦветФона));
ВремСтруктура.Вставить("buttonColor", ЦветКакЧисло(ЦветКнопки));
ВремСтруктура.Вставить("iconColor", ЦветКакЧисло(ЦветИконки));
ВремСтруктура.Вставить("fontColor", ЦветКакЧисло(ЦветТекста));
ВремСтруктура.Вставить("fontName", ШрифтНадписи.Имя);
ВремСтруктура.Вставить("fontSize", ШрифтНадписи.Размер);
ВремСтруктура.Вставить("transparency", Прозрачность);
ВремСтруктура.Вставить("thickness", ТолщинаКонтура);
ТекстJSON = ЗаписатьСтрокуJSON(ВремСтруктура);

ВнешняяКомпонента.ПоказатьОкноПрерывания(ТекстJSON, ТекстНадписи, "Стоп");

```

### <a name="CloseStopWindow">ЗакрытьОкноПрерывания() / CloseStopWindow</a>
Закрывает открытое ранее окно прерывания продолжительных действий.

```bsl
ВнешняяКомпонента.ЗакрытьОкноПрерывания();
```
